官網對應說明文件:https://sinotrade.github.io/tutor/login/
首先,說明如何登入Shioaji API。
如果你還沒有永豐金證券戶及帳號密碼,或是你想先測試Shioaji API的功能,可以使用模擬帳戶進行登入
模擬環境的帳號為PAPIUSER01~PAPIUSER08,登入密碼皆為「2222」,登入方式如下:
import shioaji as sj #將shioaji重新命名為sj
api = sj.Shioaji(simulation=True) #初始化時,simulation設為True,代表要使用模擬環境
api.login(
person_id="PAPIUSER01",
passwd="2222"
)
api.logout() #登出
如果你有永豐金證券戶,可以直接用你的電子交易的帳號密碼進行登入
import os
import shioaji as sj #將shioaji重新命名為sj
api = sj.Shioaji() #初始化api,不用給任何參數
#執行登入動作
api.login(
person_id=os.getenv('YOUR_PERSON_ID'), #登入帳號
passwd=os.getenv('YOUR_PASSWORD') #登入密碼
)
api.logout() #登出
為了維護Shiaoji API的服務品質,從2021/08/06開始有限制帳號的連線數(同時間最多五個連線)。
所以Shioaji API提供了logout登出功能,當你不使用Shioaji API時,請記得執行logout()進行登出。其餘相關服務限制,請參考官方說明檔:https://sinotrade.github.io/tutor/limit/
跟第一個使用模擬環境登入方式,除了在初始化時不給任何參數外
可以看到在這裡,是使用os.getenv來取得設定在系統環境變數中的帳號及密碼
因為在實務上,我們不會把帳號資訊直接寫在程式碼中
,而是將帳號資訊設定在環境變數中;當程式執行時再從環境變數中取得帳號資訊
之所以會這麼做,主要是為了防止在分享或上傳程式碼時,不小心把帳號資訊洩漏出去
但因為Windows、Linux的環境變數設定方式大不相同,而且你所使用的使用者帳號不一定會有權限可以新增環境變數,所以大多會透過設定檔的方式儲存帳號資訊
這裡介紹python-dotenv這個套件,使用方式也很簡單
首先,在命令提示字元中(若有使用虛擬環境,請記得先啟動虛擬環境),輸入下列指令進行安裝
pip install python-dotenv
接著在存放程式碼的資料夾底下,新增一個「.env」的檔案,檔案內容如下:
YOUR_PERSON_ID=PAPIUSER01
YOUR_PASSWORD=2222
等號前面為變數的名稱,後面為變數的值,每個變數以換行方式區分
最後,將程式碼修改為以下方式
import os
import shioaji as sj
from dotenv import load_dotenv #從dotenv模組中匯入load_dotenv這個function
load_dotenv() #讀取設定檔中的內容至環境變數
api = sj.Shioaji()
api.login(
person_id=os.getenv('YOUR_PERSON_ID'),
passwd=os.getenv('YOUR_PASSWORD')
)
api.logout()
當執行load_dotenv()時,程式就會在該資料夾底下搜尋是否有「.env」這個檔案,如果有就將變數名稱及值讀入至環境變數中
當然,你也可以把帳號資訊存在別的資料夾底下,在使用時只要指定env檔案的完整路徑即可,例如:
load_dotenv('D:\Shioaji\my_account.env')
登入後,我們可以看一下這個帳號底下有哪些帳戶。取得帳戶資訊有兩種,第一種是在執行login時,定義一個變數儲存回傳的帳戶資訊;第二種是在login後,執行list_accounts()取得帳戶資訊。這兩種方式,取得的內容都是相同的,範例如下:
accounts = api.login(
person_id=os.getenv('YOUR_PERSON_ID'),
passwd=os.getenv('YOUR_PASSWORD')
)
accounts = api.list_accounts()
若你登入虛擬環境後,執行print(accounts),會顯示以下內容
[FutureAccount(person_id='QBCCAIGJBJ', broker_id='F002000', account_id='9100020', signed=True, username='PAPIUSER01'), StockAccount(person_id='QBCCAIGJBJ', broker_id='9A95', account_id='0504350', signed=True, username='PAPIUSER01')]
可以看到虛擬環境帳號底下,分別有FutureAccount期貨帳戶及StockAccount股票帳戶,相關變數說明如下:
變數名稱 | 說明
------------- | ------------- | -------------
person_id | 身份證號碼 |
broker_id | 券商分點號碼 |
account_id | 帳戶號碼 |
signed | 是否已簽署API下單 | 若帳號資訊無此變數,表示此帳戶尚未簽署API下單
username | 使用者名稱 | 若使用個人帳號登入,此欄位顯示你的姓名
若你的帳戶尚未簽署API下單,可開啟永豐金iLeader,找到「數位e櫃台」並開啟
點「簽署中心」
簽署中心中,有分「證券類」及「期貨類」
若已簽署,則左上角會顯示「已簽署」
若左上角顯示「未簽署」,則可以點進去進行簽署動作